home *** CD-ROM | disk | FTP | other *** search
/ Commodore 64 Scene Diskmags Assortment / Commodore_CEE_Vol._1_Issue_06_1995_Jack_Vander_White_Disk_1_of_3_Side_B.d64 / emulator faq 3b < prev    next >
Text File  |  2023-02-26  |  21KB  |  558 lines

  1.                 chargen rom      -              not used
  2.                 disk drive rom   -              not used
  3.                 program          -              C64 program with load address
  4.                 disk image       magic header   64 byte magic header and
  5.                                                 683 pcs 256-byte sectors
  6.                 tape image       -              not used
  7.                  rom module       filename       8192 or 16384 byte cartridge,
  8.                                                  stored in binary format
  9.                 ram image        ram            RAMSIZE + 4103
  10.                    (x64 will load a ram image, eg. "the contents of RAM as
  11.                     in warm start" at startup, if one exists)
  12.                    Only the RAM is loaded at startup. CPU registers and I/O
  13.                    are loaded only via 'undump' in the monitor. (That way it
  14.                    won't keep crashing all the time.)
  15.  
  16.                 (1) Includes load address.
  17.                 (2) Default load address allowed.
  18.  
  19.  
  20.    5.2 Table of supported file formats.
  21.  
  22. +    This section shows which emulators and utilities can access which file +    formats. This is now a little more complete, thanks to Jouko Valta +    (again :> ).
  23.  
  24.      Legend used in table:
  25.  
  26.        x = yes, fully supported, c = convertor provided, - = no, and
  27.        empty = unknown.
  28.  
  29.      1. Emulators
  30.                      x64dsk   d64   t64   p00   CBM
  31.        x64 0.3.1        x      c     c     c     x
  32.        PC64 1.10        -      x     c     x     c
  33.        C64S 1.1A        -      x     x     c     c
  34.        C64Alive 0.9ah   -      -     -     -     x
  35.        MagiC64          -      x     x
  36.        VICE             x      c     c     x     x
  37.  
  38.      2. Transfer utils
  39.  
  40.                      x64dsk   d64   t64   p00   CBM   Transfer type
  41.        Star Commander   -      x     x     -     x    normal/fast
  42.        Trans64          x      x     x           x    normal
  43.        x1541 (old)      -      -     -     -     x    normal
  44.        x1541 (new)      -      -     -     -     x    normal
  45.        64Copy           x      x     x     x     x    n/a
  46.        UnD64            -      x     -     -     x    n/a
  47.  
  48.      3. Other utils
  49.  
  50.                      x64dsk   d64   t64   p00   CBM   ascii
  51.        fvcbm            x      x     x     x     x    -
  52.        c1541            x      c     c     x     x    -
  53.        petcat           -      -     -     x     x    x
  54.        TOK64            -      -     -     -     x    x
  55.  
  56.    5.3 Standard data files - internal formats.
  57.  
  58.      This section shows the internal format used by each filetype.  Most of it was taken from the compatibility section of the x64 manual, and was provided by Jouko 'Jopi' Valta.  That section is based on the information
  59.      acquired from news articles written by:
  60.       blohm@mathematik.uni-ulm.de (Guntram Blohm)
  61.       kbrisley@tsegw.tse.com      (Kevin Brisley)
  62.  
  63.  
  64.        File:  ram (x64)         Total Size: RAMSIZE + 4013
  65.        ---------------------------------------------------
  66.        Offset   Bytes      Description
  67.        0        RAMSIZE    contents of the RAM
  68.  
  69.      The following data is not included yet:
  70.        RAMSIZE   4096      I/O area with shadows
  71.        7                  CPU Registers: PC (LO/HI), AC, XR, YR, PS, SP
  72.  
  73.  
  74.         File:  x64 Disk File      Total Size: 174912
  75.        ------------------------------------------
  76.        Offset   Bytes      Description
  77.         0          4         Magic header: 'C',0x15, 0x41, 0x64
  78.  
  79.         4          4         Header Version:
  80.                          C1541 Version Major
  81.                          C1541 Version Minor
  82.                          Device Type:   0 = 1541
  83.                          Max Tracks:   35  (from disks v1.2 upwards)
  84.  
  85.        64      256 byte sectors
  86.  
  87.  
  88.        File:  *.d64 disk image   Total Size: 174878
  89.        ------------------------------------------
  90.        
  91.  
  92.       D64 file contains all sectors as they appear on the 1541 formatted disk.
  93.       Each sector is 256 bytes long. Error information (1 byte per sector)
  94.       can be added in the end of file.
  95.  
  96.       
  97.       File types currently supported
  98.  
  99.       174848 bytes = 35 tracks
  100.       175531 bytes = 35 tracks + 683 bytes error information
  101.       196608 bytes = 40 tracks
  102.       197376 bytes = 40 tracks + 768 bytes error information
  103.  
  104.       
  105.       Track sizes
  106.  
  107.       Tracks, size
  108.         1-17   21 sectors * 256 bytes
  109.        18-24   19 sectors * 256 bytes
  110.        25-30   18 sectors * 256 bytes
  111.        31-35   17 sectors * 256 bytes
  112.       *36-40*  17 sectors * 256 bytes
  113.  
  114.       Tracks 36-40 are non-standard.
  115.  
  116.       
  117.       Actual layout for 35 track image
  118.  
  119.        Offset, size, description
  120.         0*256, 256   track 1, sector 0
  121.         1*256, 256   track 1, sector 1
  122.          ...
  123.        20*256, 256   track 1, sector 20
  124.        21*256, 256   track 2, sector 0
  125.          ...
  126.       682*256, 256   track 35, sector 16
  127.       683*256, 683   error info (byte per sector in the same order)
  128.  
  129. Sectors are 256 bytes. Sector 0 is at offset $00000 in the .d64 file. Sector 1 is at offset $00100 in the .d64 file, and so on.
  130.  
  131. A normal 1541-format disk is divided into 4 'zones' - zone 1 = tracks 1-17 with 21 sectors (numbered 0-20) zone 2 = tracks 18-24 with 19 sectors (numbered 0-18) zone 3 = tracks 25-30 with 18 sectors (numbered 0-17) zone 4 = tracks 31-35 with 17 sectors (numbered 0-16)
  132.  
  133.   The directory lies on track 18.  The following info is for
  134.   track 18 -
  135.   sector 0 =      Block Availability Map (bytes 00-8f, bitmapped)
  136.                   bytes 90-9f = disk name (16 chars, space padded)
  137.                   The first 2 bytes are track and sector to the
  138.                   first directory block. Usually the first directory
  139.                   block is the very next block on the disk
  140.                   directory blocks:
  141.                   byte 0 = track of next directory block
  142.                   byte 1 = sector of next directory block
  143.                   bytes 2-31 = file entry #1
  144.                   bytes 32-33 = unused (should be 0)
  145.                   bytes 34-63 = file entry #2
  146.                   bytes 64-65 = unused,  etc etc
  147.   The first byte of a file entry is the type of file ($82 = PRG,
  148.   $81 = SEQ, $83 = USR, $80 = DEL, $84 = REL).  The next two bytes
  149.   point to the track & sector of the first sector of the file.
  150.   The next 16 bytes is the filename (padded).  The last two bytes
  151.   (i.e. bytes 30 & 31) gives the block count of the file (in low
  152.   byte/high byte format).
  153.  
  154.   Each file block has 254 bytes of data, unless it is the last block.
  155. The first 2 bytes of each block are the track and sector of the next block.
  156.   If the track is zero then this is the last block, and the sector # really tells the number of bytes used out of the 254 possible. The use count is the number of bytes used plus 1--so if the sector # has a $05, then really only $04 bytes were used out of the last block.
  157.  
  158.   The directory is at offset $16500 in the .d64 files. Tracks references start at 1. Sector references start at 0. So if the first 2 bytes of a block are $06 04, the absolute location is at 5 * $1500 + 4 * $100. (5 because that's $06 minus 1. $1500 because at track $06 there are 21 sectors per track, or $1500 bytes. 4 because that is the sector number, and $100 because that's the number of bytes in a sector.)
  159.  
  160.   The disk has a total of 35 tracks. There are 17 trachs with 21 sectors (357 sectors total), 7 tracks with 19 sectors (133 sectors total), 6 tracks with 18 sectors (108 sectors total), and 5 tracks with 17 sectors (85 sectors total). So total sectors per disk (or .d64 image) is 357+133+108+85 = 683 total, or 174,848 bytes total, which is the exact size of the .d64 files.
  161.  
  162.  
  163.        File:  *.t64 tape image Total Size: Varies
  164.        ------------------------------------------
  165.        Offset   Bytes      Description
  166.         0         64          Tape Record:
  167.         0         32            Tape description + EOF (for type)
  168.        32          2            Tape version: $0100
  169.        34          2            Max number of files, in LO/HI
  170.        36          2            Number of existing files, in LO/HI
  171.        38          2             -
  172.        40         24            User description, as displayed in file
  173.                                 menu
  174.  
  175.        64         32*n       File Record(s) for each of n files:
  176.         +0       1            Slot allocation flag:
  177.                               00 = free entry
  178.                               01 = normal tape file
  179.                               03 = memory snapshot v0.9, uncompressed
  180.                               02..FF = reserved for memory snapshots
  181.         +1       1            File type
  182.         +2       2            Start address in C64 memory, in LO/HI
  183.         +4       2            End address in C64 memory, in LO/HI
  184.         +6       2             -
  185.         +8       4            File start address on the image, in
  186.                                LO/HI
  187.        +12       4             -
  188.        +16      16            C64 filename
  189.  
  190.       64+32*n   ???      File contents.
  191.  
  192.  
  193.    Wolfgang Lorenz (author of PC64) posted the following in an open letter to Miha Peternel (author of C64S).  AFAIK there's been no reply.
  194.  
  195.    There is some ambiguity in the T64 file format. Could you please make a statement if the following assumptions are correct?
  196.  
  197.    Tape Record
  198.  
  199.    Offset, size, description
  200.         0, 32    DOS tape description, ASCII charset, contains either
  201.                  "C64S tape file",13,10,"Demo tape",26,"......" (no
  202.                   0!) or
  203.                  "C64S tape image file",0,0,0,0,0,0,0,0,0,0,0,0 or
  204.                  "C64 tape image file",13,10,0,0,0,0,0,0,0,0,0,0,0
  205.                  To identify a T64 file, search for the sub-strings
  206.                  "C64" and "tape".
  207.        32, 2     tape version, currently $0100 or $0101
  208.        34, 2     number of directory entries, mostly $001E
  209.        36, 2     number of used entries (0 for unknown)
  210.        38, 2     free
  211.        40, 24    user description as displayed in tape menu, CBM
  212.                  charset, padded with space
  213.  
  214.    File Record
  215.  
  216.    Offset, size, description
  217.         0, 1     entry type
  218.                  0 = free entry
  219.                  1 = normal tape file
  220.                  3 = memory snapshot v0.9, uncompressed
  221.                  2..255 reserved (for memory snapshots...)
  222.         1, 1     C64 secondary address, mostly 1
  223.         2, 2     start address
  224.         4, 2     end address
  225.         6, 2     free
  226.         8, 4     offset of file contents start within T64 file
  227.        12, 4     free
  228.        16, 16    C64 file name, CBM charset, padded with space
  229.  
  230.    Example Structure Definitions for C and C++
  231.  
  232.    struct {SHIFT-+}
  233.      char acTag[32];
  234.      word wVersion;
  235.      word wEntries;
  236.      word wUsedEntries;
  237.      word wReserved;
  238.      byte abName[24];
  239.    {SHIFT--} T64Header;
  240.  
  241.    struct {SHIFT-+}
  242.      byte bType;
  243.      byte bSecAdr;
  244.      word wStartAdr;
  245.      word wEndAdr;
  246.      word wReserved;
  247.      long lOffset;
  248.      long lReserved;
  249.      byte abName[16];
  250.    {SHIFT--} T64Entry;
  251.  
  252.  
  253.        File:  CBM Files      Total Size: Varies
  254.        ---------------------------------------
  255.        Offset   Bytes      Description
  256.         0          2          Load address in LO/HI format.
  257.  
  258.  
  259.        File:  *.p00 file image Total Size: Varies
  260.        ------------------------------------------
  261.        Offset   Bytes      Description
  262.         0          9         String "C64File" terminated by 00.
  263.         9         17         Original C64 Filename.
  264.        10          1         Record size for REL files.
  265.        26                  Original file
  266.  
  267.  
  268.   5.4 Converting between file formats.
  269.  
  270.   Instructions on how to interconvert between all of the formats used
  271.   by the various C64 emulators.
  272.   
  273.   One thing to keep in mind is that there are some 'all in one' conversion programs which convert from any format to another; 64Copy is an example.
  274.  
  275.   Formats:
  276.  
  277.   1) .d64 - Disk image used by C64s 
  278.   2) .t64 - Tape image used by C64s
  279.   3) .p00 - image format used by PC64
  280.  
  281.   Conversions:
  282.  
  283.   1) .p00 to .t64
  284.    a) Start PC64
  285.    b) First get a "Manager" window up
  286.    c) Place the cursor on the *.P00 file you want converted
  287.    d) Then use "Manager/Export" (ALT-M-E). This will save it as a
  288.       *.PRG.
  289.    e) Then use MAKETAPE.EXE to make a *.t64 file.
  290.  
  291.   2) .t64 to .p00
  292.    Use t64top00.exe, which comes with PC64 and creates p00 copies of
  293.    all the t64 files in a directory tree.
  294.  
  295.  
  296.  
  297.    6. How to extract the Rom images required by the emulators.
  298.    -----------------------------------------------------------
  299.  
  300.   Type in the following files on your C64 and run them to get the rom image files. Then transfer those files onto the machine that you require. See the comp.sys.cbm FAQ section 7 for some details on transfers.
  301.  
  302.   Alternatively, You could get TheA64Package.lha and extract the file called TheA64Package/64Prgs/SaveROMs. This will extract the basic and kernal roms from a C64.
  303.  
  304.   Note that this stuff is only required if your emulator doesn't come with ROMs.  Both C64S and PC64 come with ROMS, so don't worry about that.
  305.  
  306.    6.1 C64 roms - Basic, Kernal & Charset.
  307.  
  308.   C64 BASIC ROM extractor:
  309.  
  310.    10 OPEN 5,8,2,"64BASIC,P,W"
  311.    20 FOR X=40960 TO 49151:PRINT#2,CHR$(PEEK(X));:NEXT
  312.    30 CLOSE 5
  313.  
  314.   C64 KERNEL ROM extractor:
  315.  
  316.    10 OPEN 5,8,2,"64KERNEL,P,W"
  317.    20 FOR X=57344 TO 65535:PRINT#2,CHR$(PEEK(X));:NEXT
  318.    30 CLOSE 5
  319.  
  320.   C64 BASIC and Kernal ROM extractor:
  321.  
  322.    10 OPEN5,8,5,"0:C64ROM,S,W"
  323.    20 FOR X=40960 TO 49151
  324.    30 A$=CHR$(PEEK(X))
  325.    40 PRINT#5,A$;:NEXT
  326.    50 FOR X=57344 TO 65535
  327.    60 A$=CHR$(PEEK(X))
  328.    70 PRINT#5,A$;:NEXT
  329.    90 CLOSE5
  330.  
  331.   C64 Character ROM extractor:
  332.  
  333.    10 POKE 56334,0:POKE 1,51
  334.    20 FOR X=16384 TO 20479:POKE X,PEEK(X+36864):NEXT
  335.    30 POKE 1,55:POKE 56334,1
  336.    40 OPEN 5,8,5,"64CHARGEN,P,W"
  337.    50 FOR X=16384 TO 20479
  338.    60 PRINT#5,CHR$(PEEK(X));:NEXT
  339.    70 CLOSE 5
  340.  
  341.    6.2 VIC20 roms - Basic, Kernel & Charset.
  342.  
  343.   VIC20 BASIC ROM extractor:
  344.  
  345.    10 OPEN 5,8,2,"V20BASIC,P,W"
  346.    20 FOR X=49152 TO 57343:PRINT#5,CHR$(PEEK(X));:NEXT
  347.    30 CLOSE 5
  348.  
  349.   VIC20 KERNEL ROM extractor:
  350.  
  351.    10 OPEN 5,8,2,"V20KERNEL,P,W"
  352.    20 FOR X=57344 TO 65535:PRINT#5,CHR$(PEEK(X));:NEXT
  353.    30 CLOSE 5
  354.  
  355.   VIC20 Character ROM extractor:
  356.  
  357.    10 OPEN 5,8,2,"V20CHARGEN,P,W"
  358.    20 FOR X=32768 TO 36863:PRINT#5,CHR$(PEEK(X));:NEXT
  359.    30 CLOSE 5
  360.  
  361.  
  362.    6.3 1541 rom.
  363.  
  364.   C1541 ROM extractor:
  365.  
  366.   Extract area $C000-$FFFF
  367.  
  368.    100 B=16384:I=B
  369.    110 OPEN 15,8,15
  370.    120 FOR H=192 TO 255:PRINT H;
  371.    130 FOR L=0 TO 255
  372.    140 PRINT#15,"M-R";CHR$(L);CHR$(H)
  373.    150 GET#15,A$
  374.    160 Z=FRE(0)
  375.    170 POKE I,ASC(A$+CHR$(0))
  376.    180 I=I+1:NEXT L
  377.    190 NEXT H
  378.    200 CLOSE 15
  379.    210 OPEN 5,8,5,"0:C1541ROM,P,W"
  380.    220 FOR X=B TO I-1:PRINT#5,CHR$(PEEK(X));:NEXT
  381.    230 CLOSE 5
  382.  
  383.  
  384.  
  385.    7. Other information.
  386.    ---------------------
  387.  
  388.    7.1 Newsgroups worth reading.
  389.  
  390.   If you want to ask a question about an emulator or read what other
  391.   people are saying, then I recommend that you read comp.emulators.cbm
  392.   Another good group to read for general info about Commodore 8bit machines is comp.sys.cbm.
  393.  
  394.  
  395.    7.2 Emulator benchmarks.
  396.  
  397.   Some people are interested in the relative speed of the emulators with respect to the actual machine it's emulating.  So far, only the following simple test program has been used in benchmarking emulators.  More tests and more machines are needed!
  398.  
  399.   Benchmark test #1.
  400.  
  401.   10 a = ti
  402.   20 print "[clr/home]"
  403.   30 for i = 1 to 1000
  404.   40 print "[up][up]"; i ; i * i
  405.   50 next
  406.   60 print "[down][down] time = "; ti -a
  407.  
  408.   Results:
  409.  
  410.   "Machine"               "Config"     "Software"   "Score"
  411.  
  412.   C64                     PAL          CBM BASIC     1508
  413.   C128                    64 mode      CBM BASIC     1590
  414.   C128                    40 col       CBM BASIC     2226
  415.   C128                    40 col fast  CBM BASIC     1071 (1)
  416.   C128                    80 col       CBM BASIC     4072
  417.   C128                    80 col fast  CBM BASIC     2062
  418.   Sun SPARC IPC           8Mb RAM      x64-0.2.2     1452 (2)
  419.   Osborne 486 DX2/50      16Mb RAM     c64hercules    286
  420.   Osborne 486 DX2/50      16Mb RAM     c64sally       234
  421.   Osborne 486 DX2/50      16Mb RAM     c64s10cd      1486
  422.   Osborne 486 DX2/50      16Mb RAM     c64neu        2985
  423.   Osborne 486 DX2/50      16Mb RAM     c64alive       --- (3)
  424.   Amiga 3000/25           6Mb RAM      A64v2          788
  425.   Amiga 4000/060-50       20Mb RAM     Frodo v1.5    1463
  426.   Amiga 4000/060-50       20Mb RAM     Frodo-II v0.1 1508
  427.   Atari 1040 STfm         Hi-res       c64.tos       3567 (58 s real)
  428.   Atari 1040 STfm         Low-res      c64.tos       3624 (58 s real)
  429.  
  430.   Notes:
  431.   (1) Screen automatically blanked during test.
  432.   (2) "ti" clock doesn't necessarilly keep real time in x64.  In x64
  433.       the ti clock is relative to the virtual speed, not the wall
  434.       clock time.
  435.   (3) c64alive wouldn't run on the test machine. Doh.
  436.  
  437.  
  438.    7.3 Emulator detection.
  439.  
  440.   Writers of software on the C64 or emulators may wish to know whether the "machine" their code is executing on is a real C64, or not.  A small BASIC program was written by Wolfgang Lorenz, and posted by Paul David Doherty, which tests this.
  441.  
  442.   Critical addresses for the PIA expansion
  443.  
  444.   The critical addresses of the device are 57216--57343 ($DF80--
  445.   $DFFF).
  446.   There is the PIA chip to which you POKE the values to switch memory
  447.   blocks. The PIA does not have 128 registers, as one might think.
  448.   There are sixteen copies of its 4 addresses in that memory area. For
  449.   instance, the addresses 57216, 57284, 57288 and 57340 are equivalent
  450.   to each other.
  451.  
  452.    Here's a small CBM-BASIC program by Wolfgang Lorenz which tests 
  453.    whether it is running on a real C-64 or on an emulator.  It also
  454.    contains a suggested method for emulators to allow other programs
  455.    to detect them.  This detection method is already implemented 
  456.    in the PC64 and C64S emulators; it would be nice if other emulators
  457.    (A64, MAC64, C64ALIVE, X64) would adhere to it too.
  458.   100 rem *** where am i? *** 105 rem ------------------------------- 110 rem this is the recommended method 
  459. 115 rem how to detect a c64 emulator, 
  460. 120 rem e.g. for disabling fast loaders 
  461. 125 rem 
  462. 130 rem - the byte at $dfff changes 
  463. 135 rem   between $55 and $aa 
  464. 140 rem - the byte at $dffe contains 
  465. 145 rem   the manufacturer code letter: 
  466. 150 rem   a = c64alive 152 rem   f = frodo 
  467. 161 rem   p = personal c64 
  468. 175 rem   s = c64 software emulator 
  469. 180 rem   x = x64 
  470. 185 rem - the word at $dffc contains 
  471. 190 rem   the emulator version number, 
  472. 195 rem   e.g. $0120 for version 1.2 
  473. 200 rem - the bytes from $dfa0 contain 
  474. 205 rem   a copyright string with 
  475. 210 rem   emulator name and version, 
  476. 215 rem   $0d, copyright and $00. 
  477. 240 : 
  478. 245 print:x=57343:if peek(x)<>85 then if peek(x)<>85 then 360 
  479. 250 if peek(x)<>170 then 360 
  480. 255 if peek(x)<>85 then 360 
  481. 260 if peek(x)<>170 then 360 
  482. 265 m$=chr$(peek(57342)):print "manufacturer = '";m$;"' "; 
  483. 270 if m$="a" then print "(c64alive)"; 
  484. 272 if m$="f" then print "(frodo)"; 
  485. 275 if m$="p" then print "(pc64)"; 
  486. 285 if m$="s" then print "(c64s)"; 
  487. 290 if m$="x" then print "(x64)"; 
  488. 295 print:v=peek(57340)+peek(57341)*256 
  489. 300 for i=0 to 3:v$=mid$("0123456789abcdef",1+(v and 
  490.     15),1)+v$:v=int(v/16):next 
  491. 305 print "version = $";v$ 
  492. 310 print:i=223*256+160 
  493. 320 x=peek(i):i=i+1:if x<>0 then print chr$(x);:goto 320 325 end 329 : 330 rem ------------------------------- 
  494. 335 rem these are manufacturer-specific 
  495. 340 rem workarounds, which should be 
  496. 345 rem replaced with the official 
  497. 350 rem emulator detection method 
  498. 355 : 
  499. 360 if peek(60682)<>0 then 385 
  500. 365 print "c64 software emulator" 
  501. 370 print "(c)1991-94 miha peternel" 
  502. 375 end 
  503. 380 : 
  504. 385 if peek(60736)<>0 then 410 :rem ed40 
  505. 390 print "x64 (version 1 or 2)" 
  506. 395 print "(c)1993-94 j.sonninen/t.rantanen/j.valta" 
  507. 400 end 
  508. 405 : 
  509. 410 x=57087:if peek(x)+peek(x)+peek(x)<>0 then 435 
  510. 415 print "c64alive" 
  511. 420 print "(c)1993-94 f.littmann developments" 
  512. 425 end 
  513. 430 : 
  514. 435 print "this is an original c64 or c128"
  515.  
  516.   You can distinquish a real C128 from C64 by testing the VDC status register at $D600/$D601: If the value written to $D601 remains intact, its a C128 in either mode, otherwise a real C64.  There is no way (or need) to tell C64 from C64c though.
  517.  
  518.  
  519.    7.4 Other sources of information.
  520.  
  521.    There are a number of WWW addresses that may be of interest...
  522.  
  523.   - The Commodore 64 WWW Server.
  524.     (Has a few c64s and x64 documents)
  525.     http://www.hut.fi/(tilde)msmakela/c64.html
  526.  
  527.   - WWW Personal Computing and Emulation Homepage
  528.     (General emulator pages, not just Commodore)
  529.     http://www.cs.umd.edu/users/fms/comp/
  530.  
  531.   - Commodore emulation
  532.     (The Commodore section from the link above)
  533.     http://www.cs.umd.edu/users/fms/comp/Emulation/Commodore.html
  534.  
  535.   - X64 Emulator / Simulator For Unix
  536.     (Offical site for x64)
  537.     http://stekt.oulu.fi/(tilde)jopi/x64.html
  538.  
  539.   - Commodore 64 computing
  540.     (Home of the comp.sys.cbm FAQ)
  541.     http://www.msen.com/(tilde)brain
  542.  
  543.   - Seattle Labs
  544.     (Marketers of C64S)
  545.     http://www.seattlelab.com/c64s.htm
  546.  
  547.   - Frodo and ShapeShifter Homepage
  548.     (Official site for the Frodo emulator)
  549.     http://www.uni-mainz.de/(tilde)bauec002
  550.  
  551.   - The Official PC64 Homepage
  552.     http://ourworld.compuserve.com/homepages/pc64/
  553.  
  554.  
  555.   ==========================
  556.  
  557.  
  558.